/**
 * 场景信息store
 * 用于存放场景（模型）信息
 */
import { defineStore } from 'pinia'

const useSceneDataStore = defineStore('sceneData', {
  state: () => ({
    currentModelType: '', // 当前模型类型
    currentCameraMode: '', // 当前相机模式
    currentSceneId: '', // 当前场景id
    allTagList: [] as Array<any>, // 当前场景下的标签列表
    currentClickTagId: '', // 当前点击的标签id
    sceneTagList: [] as Array<any>, // 当前场景下的标签列表

    // 业务数据，用于请求后台参数使用
    businessParams: {
      project_id: '', // 楼盘id， 用于获取当前楼盘信息和楼栋列表
      building_id: '', // 楼栋id， 用于获取当前楼栋的房源列表
      type: '' // 业务标识字段， 用于标识当前点击的标签是楼栋标签还是楼盘标签
    }
  }),

  getters: {
    // 当前场景下的tag列表
    currentSceneTagList: (state) =>
      state.allTagList.filter((tag) => tag.scene_id === state.currentSceneId),
    // 当前点击的tag
    currentClickTagData: (state) =>
      state.allTagList.find((tag) => tag.id === state.currentClickTagId)
  },
  actions: {
    // 获取作品所有的tags
    setAllTagList(tagList: Array<any>) {
      this.allTagList = tagList
    },

    // 设置当前点击的tag的id
    setCurrentClickTagId(id: string) {
      this.currentClickTagId = id
    },

    // 设置当前场景Id
    setCurrentSceneId(sceneId: string) {
      this.currentSceneId = sceneId
    },

    // 设置当前模型的类型
    setCurrentModelType(modelType: string) {
      this.currentModelType = modelType
    },

    // 设置当前相机模式
    setCurrentCameraMode(mode: string) {
      this.currentCameraMode = mode
    },

    // 设置业务参数
    setBusinessParams(params: any) {
      this.businessParams = {
        ...this.businessParams,
        ...params
      }
    }
  }
})

export default useSceneDataStore
